package com.microservice.salmon.weixin.domain.dto;

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import com.microservice.salmon.weixin.domain.BaseMessage;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>
 * 用于接收微信传过来的消息
 * </p>
 *
 * @author 王洪庆 2018-12-12 14:27
 */
@Getter
@Setter
@JacksonXmlRootElement(localName = "xml")
public class MessageDto extends BaseMessage {

    @JacksonXmlProperty(localName = "Content")
    private String content;
    @JacksonXmlProperty(localName = "Event")
    private String event;
    @JacksonXmlProperty(localName = "EventKey")
    private String eventKey;

    /**
     * View 类型 菜单时的菜单ID
     */
    @JacksonXmlProperty(localName = "MenuId")
    private String menuId;

    /**
     * 扫码
     */
    @JacksonXmlElementWrapper(localName = "ScanCodeInfo")
    private ScanCodeInfoDto scanCodeInfoDto;

    /**************** 在菜单中发送地理位置需要的参数 *****************************/
    /**
     * 地理位置相关
     */
    @JacksonXmlProperty(localName = "Label")
    private String label; //地理位置的字符串信息
    @JacksonXmlProperty(localName = "Location_X")
    private double x; //X坐标信息
    @JacksonXmlProperty(localName = "Location_Y")
    private double y; // Y坐标信息
    /**************** 在菜单中发送地理位置需要的参数  结束 *****************************/


    /**
     * 当扫码生成的二维码时，返回票据， 用此票件可以得到生成的二维码
     *
     * 二维码的ticket，可用来换取二维码图片
     */
    @JacksonXmlProperty(localName = "Ticket")
    private String ticket;


    /**************** 上报地理位置事件 特殊值  *****************************/
    @JacksonXmlProperty(localName = "Latitude")
    private double latitude;	//地理位置纬度
    @JacksonXmlProperty(localName = "Longitude")
    private double longitude; //地理位置经度
    @JacksonXmlProperty(localName = "Precision")
    private double precision; //地理位置精度
    /**************** 上报地理位置事件 特殊值  结束 *****************************/
}

/*
Click 事件
<xml>
<ToUserName><![CDATA[gh_709ddf5efc80]]></ToUserName>
<FromUserName><![CDATA[onPB_1kLuDj_HPgRvcFSnRc6T70E]]></FromUserName>
<CreateTime>1544600206</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[CLICK]]></Event>
<EventKey><![CDATA[11]]></EventKey>
</xml>
<xml>

View 事件
<xml>
<ToUserName><![CDATA[gh_709ddf5efc80]]></ToUserName>
<FromUserName><![CDATA[onPB_1kLuDj_HPgRvcFSnRc6T70E]]></FromUserName>
<CreateTime>1544600188</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[VIEW]]></Event>
<EventKey><![CDATA[http://www.imooc.com]]></EventKey>
<MenuId>436934038</MenuId>
</xml>

扫码
<ToUserName><![CDATA[gh_709ddf5efc80]]></ToUserName>
<FromUserName><![CDATA[onPB_1kLuDj_HPgRvcFSnRc6T70E]]></FromUserName>
<CreateTime>1544600222</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[scancode_push]]></Event>
<EventKey><![CDATA[31]]></EventKey>
<ScanCodeInfo>
    <ScanType><![CDATA[qrcode]]></ScanType>
    <ScanResult><![CDATA[测试扫码内容]]></ScanResult>
</ScanCodeInfo>
</xml>


地理位置 发送两个xml

<xml><ToUserName><![CDATA[gh_709ddf5efc80]]></ToUserName>
<FromUserName><![CDATA[onPB_1kLuDj_HPgRvcFSnRc6T70E]]></FromUserName>
<CreateTime>1544600548</CreateTime>
<MsgType><![CDATA[location]]></MsgType>
<Location_X>36.732460</Location_X>
<Location_Y>117.142891</Location_Y>
<Scale>15</Scale>
<Label><![CDATA[山东省济南市历城区王舍人街道办以北]]></Label>
<MsgId>6634008839480595786</MsgId>
</xml>
<xml><ToUserName><![CDATA[gh_709ddf5efc80]]></ToUserName>
<FromUserName><![CDATA[onPB_1kLuDj_HPgRvcFSnRc6T70E]]></FromUserName>
<CreateTime>1544600549</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[location_select]]></Event>
<EventKey><![CDATA[32]]></EventKey>
<SendLocationInfo><Location_X><![CDATA[36.732460021972656]]></Location_X>
<Location_Y><![CDATA[117.14289093017578]]></Location_Y>
<Scale><![CDATA[15]]></Scale>
<Label><![CDATA[山东省济南市历城区王舍人街道办以北]]></Label>
<Poiname><![CDATA[万象新天理想郡]]></Poiname>
</SendLocationInfo>
</xml>

 */